Discovering and Debugging Algebraic Specifications for Java Classes
نویسندگان
چکیده
Date The final copy of this thesis has been examined by the signatories, and we find that both the content and the form meet acceptable presentation standards of scholarly work in the above mentioned discipline. This thesis presents a system for reducing the cost of developing algebraic specifications for Java classes. The system consists of two components: an algebraic specification discovery tool and an algebraic interpreter. The first tool automatically discovers algebraic specifications from Java classes. The tool generates tests and captures the information it observes during their execution as algebraic axioms. In practice, this tool is accurate, but not complete. Still, the discovered specifications are a good starting point for writing a specification. The second component of our system is the algebraic specification interpreter, which helps developers in achieving specification completeness. Given an algebraic specification of a class, the interpreter generates a rapid prototype which can be used within an application just like any regular Java class. When running an application that uses the rapid prototype, the interpreter prints error messages that tell the developer in which way the specification is incomplete. We validate evaluate the performance of our tools and present case studies that demonstrate the usefulness of the approach. iii iv Dedication To my mother, my father, and my sister. v vi Acknowledgments First and foremost, I want to thank my advisor Amer Diwan for supporting me with freedom and guidance, inspiration and feedback, patience and challenges, and everything else I needed as a student. Amer has taught me all important aspects of conducting research, including how to communicate ideas and results. Most importantly though, Amer never lost interest in my work, and his friendship with his students makes working with him a true privilege. I want to thank the members of my thesis committee, for being a great resource and for providing constructive and supportive feedback to the ideas presented in this thesis. I want to thank Alexander Wolf and Dirk Grunwald for being interested in my work, giving great advice, and for their support of my job search. I want to thank Michael Burke for making two summer internships at the IBM Watson lab possible for me. He was a great mentor, and I enjoyed working with him on several cool research projects. Michael also improved my writing by iteratively eliminating many redundant words from a report we wrote together; this was a very useful …
منابع مشابه
Developing and Debugging Algebraic Specifications for Java Classes ; CU-CS-984-04
Modern programs make extensive use of reusable software libraries. For example, a study of a number of large Java applications shows that between 17% and 30% of the classes in those applications use container classes defined in the java.util package. Given this extensive code reuse in Java programs, it is important for the interfaces of reusable classes to be well documented. An interface is we...
متن کاملDiscovering Algebraic Specifications for Java Classes ; CU-CS-985-04
Modern programs make extensive use of reusable software libraries. For example, a study of a number of large Java applications shows that between 17% and 30% of the classes in those applications use the container classes from the java.util package. Given this extensive code reuse in Java programs, it is important for the reusable interfaces to have clear and unambiguous documentation. Unfortuna...
متن کاملDiscovering Algebraic Specifications for Java Classes
Modern programs make extensive use of reusable software libraries. For example, a study of a number of large Java applications shows that between 17% and 30% of the classes in those applications use the container classes from the java.util package. Given this extensive code reuse in Java programs, it is important for the reusable interfaces to have clear and unambiguous documentation. Unfortuna...
متن کاملDiscovering Algebraic Specifications from Java Classes
We present and evaluate an automatic tool for extracting algebraic specifications from Java classes. Our tool maps a Java class to an algebraic signature and then uses the signature to generate a large number of terms. The tool evaluates these terms and based on the results of the evaluation, it proposes equations. Finally, the tool generalizes equations to axioms and eliminates many redundant ...
متن کاملChecking the Conformance of Java Classes Against Algebraic Specifications
We present and evaluate an approach for the run-time conformance checking of Java classes against property-driven algebraic specifications. Our proposal consists in determining, at run-time, whether the classes subject to analysis behave as required by the specification. The key idea is to reduce the conformance checking problem to the runtime monitoring of contract-annotated classes, a process...
متن کامل